//1、slice
//参数含义：
//start：开始截取的字符索引（包含此字符）
//end：结束截取的字符索引（不包含此字符）
//start > end：返回空字符串
//start < 0：start = 数组长度 + start

String.prototype.sx_slice = function(start = 0,end){
    start = start < 0 ? start + this.length : start
    end = !end && end !== 0 ? this.length : end
    if(start >= end) return ''
    let str = ''
    for(let i = start; i < end; i++){
        str += this[i]
    }
    return str
}

//2、substr
//参数含义：
//start：开始截取的字符索引（包含此字符）
//length：截取的长度
//start < 0：start = 数组长度 + start
//length超出所能截取范围，需要做处理
//length < 0： 返回空字符串

String.prototype.sx_substr = function(start = 0, length){
    if(length < 0) return ''
    start = start < 0 ? this.length + start : start
    length = (!length && length !== 0) || length > this.length - start ? this.length : start + length
    let str = ''
    for(let i = start; i < length; i++){
        str += this[i]
    }
}

//3、substring
//功能与slice大致相同，区别之处：start > end 互换值
String.prototype.sx_substring = function(start = 0, end){
    start = start < 0 ? start + this.length : start
    end = !end && end !== 0 ? this.length : end
    if(start >= end){
        [start,end] = [end,start]
    }
    let str = ''
    for(let i = start; i < end; i ++){
        str += this[i]
    }
    return str
}